--															   						  
--														
--		
--					          -----
--				            -  . .  -
--				           --   ^   --
--				            - :...: -
--					          -----			      <-----    me
--				         \/  -  .  -   \/
--					      \-    .     -/
--	     		          --    .     --
--          		       -         - 
--          	   		     -------
--			              LUA code by me	
--			       
--(except for the code that restricts the code to 1 map that code was edited from Tatsuru's code in pinned messages in scripting channel on discord thank you Tatsuru)  		
--						
local function funIce(

line, mo

		)
										if not mapheaderinfo[gamemap].coolmap then
								return end --if map doesn't have "coolmap" parameter, abort function
																		
							mo.friction = FRACUNIT
if (

mo.player.speed > 20*FRACUNIT

)
then
mo.movefactor = 8000
end
end

addHook(

"LinedefExecute", funIce, "SLIP"

				)		
																						
--pre-2.1 controls											
addHook("PlayerCmd", function(

player, cmd

	)							
if not mapheaderinfo[gamemap].coolmap then
return end --if map doesn't have "coolmap" parameter, abort function
if (

player.speed > 36*FRACUNIT

)												
then										
cmd.sidemove = 0									
end														
end)																
																							



--This makes sure the function attatched to the MapChange hook will only run if
--the map is changed from a console command instead of through normal gameplay
local intermission_happened = false

addHook("MapLoad", function()
	if not mapheaderinfo[gamemap].coolmap then return end
	intermission_happened = false
end)

addHook("IntermissionThinker", function()
	if not mapheaderinfo[gamemap].coolmap then return end
	
	intermission_happened = true
end)


--change all players abilities back to normal on map change
addHook("MapChange", function()
	if not mapheaderinfo[gamemap].coolmap then return end
	
	if (intermission_happened == false) then
		for player in players.iterate do
			if player.valid then
				player.charflags = skins[player.mo.skin].flags
				player.charability = skins[player.mo.skin].ability
				player.actionspd = skins[player.mo.skin].actionspd
				player.charability2 = skins[player.mo.skin].ability2
				player.jumpfactor = skins[player.mo.skin].jumpfactor
				player.runspeed = skins[player.mo.skin].runspeed		
				player.mindash = skins[player.mo.skin].mindash
				player.maxdash = skins[player.mo.skin].maxdash
			end
		end
	end
end)

addHook("PlayerThink", function(player)
	--print("player.exiting = " .. player.exiting)
	if not mapheaderinfo[gamemap].coolmap then return end

	if (player.exiting == 0) then
		--gives player sonic abilities
		player.charflags = skins["sonic"].flags --0
		player.charability = skins["sonic"].ability --CA_THOK
		player.actionspd = skins["sonic"].actionspd -- 60*FRACUNIT
		player.charability2 = skins["sonic"].ability2 -- CA2_SPINDASH
		player.jumpfactor = skins["sonic"].jumpfactor -- FRACUNIT
		player.runspeed = skins["sonic"].runspeed -- 1835008
		player.mindash = skins["sonic"].mindash -- 983040
		player.maxdash = skins["sonic"].maxdash -- 4587520						
		if (player.mo.skin == "metalsonic")
		then								
			player.charflags = SF_MACHINE			
		end
	else
		player.charflags = skins[player.mo.skin].flags
		player.charability = skins[player.mo.skin].ability
		player.actionspd = skins[player.mo.skin].actionspd
		player.charability2 = skins[player.mo.skin].ability2
		player.jumpfactor = skins[player.mo.skin].jumpfactor
		player.runspeed = skins[player.mo.skin].runspeed		
		player.mindash = skins[player.mo.skin].mindash
		player.maxdash = skins[player.mo.skin].maxdash
	end
end)